home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 October / EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso / Aminet / dev / misc / TSBVector.lha / Sources / lineexample.S < prev    next >
Text File  |  1995-06-13  |  7KB  |  375 lines

  1. *******************************************************
  2. ***   Line Vector example for TSB's Vectordesigner  ***
  3. ***   --------------------------------------------  ***
  4. ***                                                 ***
  5. ***               written by ALLOC                  ***
  6. ***                                                 ***
  7. *******************************************************
  8. ;---------------------------------------
  9. ; a  (return)
  10. ;(return)
  11. ; y  (return)
  12. ; jm (return)
  13.  
  14. >extern    "df0:readyobjects/lineship.l",lineobject
  15. org    $30000
  16. load    $30000
  17.  
  18. clear:     MACRO
  19.     lea    $dff000,a5
  20.     move.l    ?1,$54(a5)
  21.     move.w    ?2,d0       ;x
  22.     move.w    ?3,d1       ;y
  23.     move.w    #$0,$66(a5)
  24.     move.w    #%0000000100000000,$40(a5)
  25.     move.w    #0,$42(a5)
  26.     lsl.w    #6,d1
  27.     or.w    d1,d0
  28.     move.w    d0,$58(a5)
  29.     ENDM
  30.  
  31.  
  32. m:
  33.     
  34.          lea    $dff000,a5
  35.         movem.l    d0-d7/a0-a6,-(a7)
  36.         moveq    #61,d0
  37.         lea    zero,a0
  38.         lea    8,a1
  39. copyzero:    move.l    (a1)+,(a0)+
  40.         dbf    d0,copyzero
  41.         move.l    #raus,$020
  42. raus:        move.w    #$2700,sr
  43.         adda    #6,a7
  44.         move.l    a7,sstack
  45.         move.l    #stackend,a7
  46.         move.w    $1c(a5),intbuff
  47.         move.w    #$7fff,$9a(a5)
  48.         move.w    #$7fff,$9c(a5)
  49.         bra.L    main        
  50. oson:        move.w    #$2700,sr
  51.         move.w    #$7fff,$9a(a5)
  52.         move.w    intbuff(pc),d0
  53.         ori.w    #$8000,d0
  54.         move.w    d0,$9a(a5)
  55.         moveq    #61,d0
  56.         lea    zero(pc),a0
  57.         lea    8,a1
  58. zeroback:    move.l    (a0)+,(a1)+
  59.         dbf    d0,zeroback
  60.         move.l    sstack(pc),a7
  61.         move.w    #0,sr
  62.         movem.l    (a7)+,d0-d7/a0-a6
  63.         rts
  64. grname:        dc.b    "graphics.library",0
  65.         align    4
  66.  
  67. zero:        blk.l    62,0
  68.         align    4
  69. sstack:        dc.l    0
  70. stack:        blk.b    4048
  71. stackend:
  72.         align    4
  73.  
  74. intbuff:    dc.l    0
  75.         align    4
  76. main:        
  77. **********************
  78. *** Voreinstellung ***
  79. **********************
  80.  
  81.     lea    $dff000,a5
  82.     move.l    #$ffffffff,$44(a5)
  83.     move.w    #%1000010000000000,$96(a5)
  84.     move.w    #%0000011111111111,$96(a5)
  85.     move.l  #copperlist,$80(a5)
  86.      clr.w   $88(a5)
  87.     move.w  #%1000011111000000,$96(a5)
  88.     lea    hauptloop(pc),a4
  89.     move.l    a4,$6c        
  90.     move.w    #$c010,$9a(a5)
  91.     move.w    #$2000,sr
  92.  
  93. ************
  94. *** Wait ***
  95. ************
  96.  
  97. wait:    
  98.     move.l    $dff004,d0
  99.     and.l    #$1ff00,d0
  100.     cmp.l    #$ff00,d0
  101.     ble.s    wait
  102.     moveq    #0,d0
  103.     bsr    v_lines
  104.  
  105.     move.l    workplane,a0
  106.     move.l    showplane,workplane
  107.     move.l    a0,showplane    
  108.     btst    #6,$bfe001
  109.     beq    end
  110.     bra    wait        
  111. **************************
  112. ******    Hauptteil  *******
  113. **************************
  114.  
  115. hauptloop:
  116.     move.w    #$10,$dff09c        
  117.     movem.l    d0-d7/a0-a6,-(a7)
  118.     lea    bob1adrs,a0
  119.     move.l    showplane,d0
  120.     moveq    #0,d7
  121. planesset:
  122.     swap    d0
  123.     move.w    d0,2(a0)
  124.     swap    d0
  125.     move.w    d0,6(a0)
  126.     add.l    #8,a0
  127.     add.l    #[200*40],d0
  128.     dbf    d7,planesset
  129. hplend:
  130.     movem.l    (a7)+,d0-d7/a0-a6
  131.     rte                
  132.  
  133.  
  134. workplane:
  135.     dc.l    $60000
  136. showplane:
  137.     dc.l    $70000
  138.  
  139.  
  140.  
  141.  
  142. ***************
  143. *** E N D E ***
  144. ***************
  145.  
  146.  
  147. end:        
  148.         lea    $dff000,a5
  149.         move.l    4,a6
  150.         lea    grname(pc),a1
  151.         clr.l    d0
  152.         jsr    -408(a6)
  153.         move.l    d0,a4
  154.         move.l    38(a4),$80(a5)
  155.         clr.w    $88(a5)
  156.         move.w    #$83f0,$96(a5)
  157.         jmp    oson
  158.         
  159. copperlist:
  160.                 dc.w    $008e,$2981,$0090,$29c1
  161.         dc.w    $0092,$0038,$0094,$00d0
  162.          dc.w    $0108,$0000,$010a,$0000
  163.              dc.w    $0102,$0000,$0104,$0024
  164.         dc.w    $120,$0,$122,$0
  165.         dc.w    $124,$0,$126,$0
  166.         dc.w    $128,$0,$12a,$0
  167.         dc.w    $12c,$0,$12e,$0
  168.         dc.w    $130,$0,$132,$0
  169.         dc.w    $134,$0,$136,$0
  170.         dc.w    $138,$0,$13a,$0
  171.         dc.w    $13c,$0,$13e,$0
  172.         dc.w    $100,$0200
  173.         dc.w    $9c,$8010
  174. tsbcolors:
  175.         dc.w    $182,0,$182,$f00
  176.         
  177.         dc.w    $4809,$fffe
  178. bob1adrs:
  179.         dc.w    $00e0,$0006,$00e2,$4000
  180.         dc.w    $4a09,$fffe
  181.         dc.w    $100,$1200
  182.         dc.w    $ffe1,$fffe
  183.         dc.w    $0809,$fffe
  184.         dc.w    $100,$0200
  185.         dc.w    $ffff,$fffe
  186.  
  187. v_lines:
  188.     move.w    #$f,$dff180
  189.     clear    workplane,#20,#200
  190.     addq.w    #2,anglex
  191.     addq.w    #2,angley
  192.     addq.w    #2,anglez
  193.     move.w    #$1ff,d7
  194.     and.w    d7,anglex
  195.     and.w    d7,angley
  196.     and.w    d7,anglez
  197.  
  198.     lea    lineobject,a6
  199.     lea    drawtable,a5
  200. lineloop:
  201.     move.w    (a6)+,d0
  202.     cmp.w    #$7fff,d0
  203.     beq    lineloop2
  204.     move.w    (a6)+,d1
  205.     move.w    (a6)+,d2
  206.     addq.l    #2,a6
  207.     move.w    anglex(pc),a0
  208.     move.w    angley(pc),a1
  209.     move.w    anglez(pc),a2
  210.  
  211.     bsr    rotate
  212.     add.w    #400,d2
  213.     ext.l    d0
  214.     ext.l    d1
  215.     ext.l    d2
  216.     asl.l    #8,d0
  217.     asl.l    #8,d1
  218.     divs    d2,d0
  219.     divs    d2,d1
  220.     add.w    #160,d0
  221.     add.w    #100,d1
  222.     move.w    d0,(a5)+
  223.     move.w    d1,(a5)+
  224.     bra    lineloop
  225. lineloop2:
  226.     move.w    #$7fff,(a5)
  227.     
  228.     lea    drawtable(pc),a5
  229.     lea    lineobject+1024(pc),a6    
  230. lineloop3:
  231.     move.w    (a6)+,d5
  232.     cmp.w    #$7fff,d5
  233.     beq.s    lineloop4
  234.     move.w    (a6)+,d6
  235.     lsl.w    #2,d5
  236.     lsl.w    #2,d6
  237.     move.w    (a5,d5.w),d0
  238.     move.w    2(a5,d5.w),d1
  239.     move.w    (a5,d6.w),d2
  240.     move.w    2(a5,d6.w),d3
  241.  
  242.     move.l    workplane,a0
  243.     lea    40,a1
  244.     bsr    linedraw
  245.     bra    lineloop3
  246. lineloop4:
  247.     clr.w    $dff180
  248.     rts
  249.  
  250. anglex:
  251.     dc.w    0
  252. angley:
  253.     dc.w    0
  254. anglez:
  255.     dc.w    0
  256.  
  257. drawtable:
  258.     blk.b    1000,0
  259.  
  260.  
  261. lineobject:
  262.     blk.b    2000,0
  263.  
  264.  
  265. ********************
  266. *** 3-D Rotieren ***
  267. ********************
  268. ;d0,d1,d2   x,y,z
  269. ;a0,a1,a2   umx,umy,umz
  270.  
  271. rotate:
  272.     movem.l    d3-d7/a3-a6,-(a7)
  273.     lea    costable(pc),a3
  274.     lea    sintable(pc),a4
  275.     cmp.w    #0,a2
  276.     beq    rot_1
  277.     move.w    d0,d4
  278.     move.w    d1,d5
  279.     muls    (a3,a2.w),d4
  280.     muls    (a4,a2.w),d5
  281.     sub.l    d5,d4
  282.     asr.l    #8,d4
  283.     move.w    d4,d6
  284.     move.w    d0,d4
  285.     move.w    d1,d5
  286.     muls    (a4,a2.w),d4
  287.     muls    (a3,a2.w),d5
  288.     add.l    d4,d5
  289.     asr.l    #8,d5
  290.     move.w    d5,d1
  291.     move.w    d6,d0
  292. rot_1:
  293.     cmp.w    #0,a0
  294.     beq    rot_2
  295.     move.w    d2,d4
  296.     move.w    d1,d5
  297.     muls    (a3,a0.w),d4
  298.     muls    (a4,a0.w),d5
  299.     sub.l    d5,d4
  300.     asr.l    #8,d4
  301.     move.w    d4,d6
  302.     move.w    d2,d4
  303.     move.w    d1,d5
  304.     muls    (a4,a0.w),d4
  305.     muls    (a3,a0.w),d5
  306.     add.l    d4,d5
  307.     asr.l    #8,d5
  308.     move.w    d5,d1
  309.     move.w    d6,d2
  310. rot_2:
  311.     cmp.w    #0,a1
  312.     beq    rot_end
  313.     move.w    d0,d4
  314.     move.w    d2,d5
  315.     muls    (a3,a1.w),d4
  316.     muls    (a4,a1.w),d5
  317.     sub.l    d5,d4
  318.     asr.l    #8,d4
  319.     move.w    d4,d6
  320.     move.w    d0,d4
  321.     move.w    d2,d5
  322.     muls    (a4,a1.w),d4
  323.     muls    (a3,a1.w),d5
  324.     add.l    d4,d5
  325.     asr.l    #8,d5
  326.     move.w    d5,d2
  327.     move.w    d6,d0
  328. rot_end:
  329.     movem.l    (a7)+,d3-d7/a3-a6
  330.     rts
  331.  
  332.  
  333. costable:
  334.  
  335.     dc.w    256,256,256,255,255,254,253,252
  336.     dc.w    251,250,248,247,245,243,241,239
  337.     dc.w    237,234,231,229,226,223,220,216
  338.     dc.w    213,209,206,202,198,194,190,185
  339.     dc.w    181,177,172,167,162,157,152,147
  340.     dc.w    142,137,132,126,121,115,109,104
  341.     dc.w    98,92,86,80,74,68,62,56
  342.     dc.w    50,44,38,31,25,19,13,6
  343.     dc.w    0,-5,-12,-18,-24,-30,-37,-43
  344.     dc.w    -49,-55,-61,-67,-73,-79,-85,-91
  345.     dc.w    -97,-103,-108,-114,-120,-125,-131,-136
  346.     dc.w    -141,-146,-151,-156,-161,-166,-171,-176
  347.     dc.w    -180,-184,-189,-193,-197,-201,-205,-208
  348.     dc.w    -212,-215,-219,-222,-225,-228,-230,-233
  349.     dc.w    -236,-238,-240,-242,-244,-246,-247,-249
  350.     dc.w    -250,-251,-252,-253,-254,-254,-255,-255
  351.     dc.w    -255,-255,-255,-254,-254,-253,-252,-251
  352.     dc.w    -250,-249,-247,-246,-244,-242,-240,-238
  353.     dc.w    -236,-233,-230,-228,-225,-222,-219,-215
  354.     dc.w    -212,-208,-205,-201,-197,-193,-189,-184
  355.     dc.w    -180,-176,-171,-166,-161,-156,-151,-146
  356.     dc.w    -141,-136,-131,-125,-120,-114,-108,-103
  357.     dc.w    -97,-91,-85,-79,-73,-67,-61,-55
  358.     dc.w    -49,-43,-37,-30,-24,-18,-12,-5
  359.     dc.w    0,6,13,19,25,31,38,44
  360.     dc.w    50,56,62,68,74,80,86,92
  361.     dc.w    98,104,109,115,121,126,132,137
  362.     dc.w    142,147,152,158,162,167,172,177
  363.     dc.w    181,185,190,194,198,202,206,209
  364.     dc.w    213,216,220,223,226,229,231,234
  365.     dc.w    237,239,241,243,245,247,248,250
  366.     dc.w    251,252,253,254,255,255,256,256
  367.  
  368.  
  369.  
  370. sintable:
  371.  
  372.     dc.w    0,-5,-12,-18,-24,-30,-37,-43
  373.     dc.w    -49,-55,-61,-67,-73,-79,-85,-91
  374.     dc.w    -97,-103,-108,-114,-120,-125,-131,-136
  375.     dc.w    -141,-ªRªªª”ªªªTªªª”ªªªQ*ªªªªª‘$ªª’”ªª©I*ªª¥JEUURªIRª”¤Rª¤D¤URJªED¤JD¤UJJRª¥*ª©IERRDEDE$DIJRIRQ*ªª©Rªª©I*ªªI*ª©Rªª©I*ª©$ªª©Rªª©I*ª¤Rªª©Rªª©I*ª©Tªª©Rªª©I*ªª•*ª©Rªª©I*ªª©*ª©Rªª©I*ªªªªª©Rªª©I*ªªE*ª©Rªª©I*ªªªªª©Rªª©I*ª¤E*ª©Rªª©I*ªªTªª©Rªª©I*ªªJªª©Rªª©I*ªªªªª©Rªª©I*ª©*ªª©Rªª©I*ªª•*ª©Rªª©I*ªª•*ª©Rªª©I*ªªªD‰D‰UE)*U¤¥*ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªU%%*ªªªJUU*ªª¤ªª©Dªªª©*ªªªªªªªDD‘Rªªª¤ª©*©)‘‘’”ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª